package com.aop.controller;



import com.aop.pojo.Dept;
import com.aop.pojo.Result;
import com.aop.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author wzm
 * @create 2023-10-07 16:49
 * project_name:stu_sys
 */
@Slf4j
@RestController
@RequestMapping("/depts")                    //为简化路径的定义 每个方法上如果都有相同路径开头可以将路径抽取到类上 单纯使用参数和请求方式即可匹配方法
public class DeptController {
    //代码方式使用slf4j进行日志输出  推荐使用注解
//   private Logger log = LoggerFactory.getLogger(DeptController.class);

    //使用service对象 从ioc容器中获取
    @Autowired
    private DeptService deptService;


    //查询全部部门接口
    //@RequestMapping(value = "/depts",method = RequestMethod.POST)
    /*@PostMapping
    @PutMapping
    @DeleteMapping*/
    @GetMapping//当以Get请求访问该路径时此方法会执行
    public Result list(){
      log.info("查询所有部门的数据");
     List<Dept> list =  deptService.list();
      return Result.success(list);
    }


    //删除部门
   @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) throws Exception {
        log.info("根据id删除部门");
        //调用service
        deptService.delete(id);
        return Result.success();
   }

   //新增部门信息
   @PostMapping
   public Result add(@RequestBody Dept dept){
        log.info("新增部门信息为：{}",dept);
        //调用service完成添加功能
       deptService.add(dept);
       return Result.success();
   }

   //根据Id查询部门
    @GetMapping("/{id}")
    public Result getDept(@PathVariable Integer id){
        log.info("根据id查询：{}",id);
        Dept dept =  deptService.getById(id);
        return Result.success(dept);
    }

    @PutMapping
    public Result update(@RequestBody Dept dept){
        log.info("根据id修改部门信息：{}",dept);
        deptService.update(dept);
        return Result.success();
    }


}
